4559107396fcd34adb15d08fa6093e02bca5ece4,src/main/org/codehaus/groovy/ast/GenericsType.java,GenericsTypeMatcher,compareGenericsWithBound,#ClassNode#ClassNode#,248

Before Change


                                                    gt = classNodePlaceholders.get(gt.getName());
                                                }
                                            }
                                            match = gt.getType().isDerivedFrom(classNodeType.getType());
                                        }
                                        if (match && redirectBoundType.upperBounds!=null) {
                                            for (ClassNode upperBound : redirectBoundType.upperBounds) {
                                                GenericsType gt = new GenericsType(upperBound);
                                                if (gt.isPlaceholder()) {
                                                    // check for recursive generic typedef, like in
                                                    // <T extends Comparable<? super T>>
                                                    if (classNodePlaceholders.containsKey(gt.getName())) {
                                                        gt = classNodePlaceholders.get(gt.getName());
                                                    }
                                                }
                                                match = match && classNodeType.getType().isDerivedFrom(gt.getType());
                                            }
                                        }
                                        return match;

After Change


                                                    gt = classNodePlaceholders.get(gt.getName());
                                                }
                                            }
                                            match = (gt.getType().isDerivedFrom(classNodeType.getType())
                                                || gt.getType().implementsInterface(classNodeType.getType()));
                                        }
                                        if (match && redirectBoundType.upperBounds!=null) {
                                            for (ClassNode upperBound : redirectBoundType.upperBounds) {
                                                GenericsType gt = new GenericsType(upperBound);
                                                if (gt.isPlaceholder()) {
                                                    // check for recursive generic typedef, like in
                                                    // <T extends Comparable<? super T>>
                                                    if (classNodePlaceholders.containsKey(gt.getName())) {
                                                        gt = classNodePlaceholders.get(gt.getName());
                                                    }
                                                }
                                                match = match &&
                                                        (classNodeType.getType().isDerivedFrom(gt.getType())
                                                         || classNodeType.getType().implementsInterface(gt.getType()));
                                            }
                                        }
                                        return match;